FFmpeg 8.0 support 1/2
authorAlexander Smorkalov <alexander.smorkalov@opencv.ai>
Thu, 18 Dec 2025 11:30:00 +0000 (12:30 +0100)
committerSantiago Vila <sanvila@debian.org>
Thu, 18 Dec 2025 11:30:00 +0000 (12:30 +0100)
Origin: upstream, https://github.com/opencv/opencv/commit/90c444abd387ffa70b2e72a34922903a2f0f4f5a

Gbp-Pq: Name ffmpeg-8.0-compat-1.patch

modules/videoio/src/cap_ffmpeg_impl.hpp

index 0546fbdfbedc31d14b7fba41e160712e3a6e21bf..78037d58be297dc530ae157960b74dd4cfcccebe 100644 (file)
@@ -680,7 +680,10 @@ void CvCapture_FFMPEG::close()
     if( video_st )
     {
 #ifdef CV_FFMPEG_CODECPAR
+// avcodec_close removed in FFmpeg release 8.0
+# if (LIBAVCODEC_BUILD < CALC_FFMPEG_VERSION(62, 11, 100))
         avcodec_close( context );
+# endif
 #endif
         video_st = NULL;
     }
@@ -1939,7 +1942,18 @@ void CvCapture_FFMPEG::get_rotation_angle()
     rotation_angle = 0;
 #if LIBAVFORMAT_BUILD >= CALC_FFMPEG_VERSION(57, 68, 100)
     const uint8_t *data = 0;
+    // av_stream_get_side_data removed in FFmpeg release 8.0
+# if (LIBAVCODEC_BUILD < CALC_FFMPEG_VERSION(62, 11, 100))
     data = av_stream_get_side_data(video_st, AV_PKT_DATA_DISPLAYMATRIX, NULL);
+# else
+    AVPacketSideData* sd = video_st->codecpar->coded_side_data;
+    int nb_sd = video_st->codecpar->nb_coded_side_data;
+    if (sd && nb_sd > 0)
+    {
+        const AVPacketSideData* mtx = av_packet_side_data_get(sd,  nb_sd, AV_PKT_DATA_DISPLAYMATRIX);
+        data = mtx->data;
+    }
+# endif
     if (data)
     {
         rotation_angle = -cvRound(av_display_rotation_get((const int32_t*)data));